图解HTTP读书笔记,这里你会知道工作中经常看到HTTP协议,长连接和短连接区别,HTTP和HTTPS的联系
了解Web和网络基础
web实现网络互联,三项WWW构建技术:文本标记语言(HTML)、文档传输协议(HTTP)、文档的统一资源定位符(地址URL)
TCP/IP 四层协议结构
应用层 : 决定了向用户提供应用服务时通信的活动。 比如,FTP(File Transfer Protocol,文件传输协议)和 DNS ( Domain Name System,域名系统)、HTTP协议
传输层 : 提供处于网络连接中的两台计算机之间的数据传输。在传输层有两个性质不同的协议:TCP(Transmission Control Proctocal,传输控制协议)和UDP(User Data Protocol, 用户数据报协议)。
网络层(路由器): IP协议
问题: IP协议和IP地址的区别
IP协议的作用是把各种数据包传送给对方。这需要满足很多条件。其中两个重要的条件是IP地址和MAC地址(Media Access Control Address)
IP地址指明了节点被分配到的地址,MAC地址是指网卡所属的固定地址。IP地址可以和MAC地址进行配对。IP可变换,但MAC地址基本上不会更改。
IP间的通信依赖MAC地址。在网络上,通常是经过多台计算机和网络设备中转才能连接对方。而在进行中转时,会利用下一站中转设备的MAC地址来搜索下一个中转目标。这时,会采用ARP协议(Address Resolution Protocol )。ARP协议是一种用以解析地址的协议,根据通信方的IP地址就可以反查出对应的MAC地址。
- 链路层 : 用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC(Network Interface Card, 网络适配器,即网卡)及光纤等物理可见部分。硬件上的范畴均在链路层的作用范围之内。
TCP三次握手:确保可靠性
DNS服务:域名到IP地址之间的转化
- URL 和 URI
URL(统一资源定位符) 就是我们输入浏览器中的地址,是表示资源地址;URI(统一资源标示符)某个协议方案标示的资源定位标识符,是标识资源;可见URL是URI的子集
以下列举常见的URI的例子:
- URI格式涵盖绝对URI、绝对URL、相对URL
HTTP协议
HTTP概述:
- 基于TCP/IP的超文本传输协议
- 解决本传输问题——HTTP/0.9 (只有GET 法)
- 解决多类型传输 ——HTTP/1.0
- 解决持久连接问题——HTTP/1.1
- 解决安全传输问题——HTTPS
HTTP1.0 特点
- 服务于应用层
- 简单快速:基于TCP、客户端请求&&服务端相应
- 无状态:引入Cookie 实现持久化
- 不持久:(HTTP1.1引入持久连接,所谓持久化就是客户端、服务端任意一方不断开链接,则保持TCP链接。它的好处在于减少了 TCP 连接的重复建立和断开所造成的 额外开销,减轻了服务器端的负载。另外,减少开销的那部分时间,使 HTTP 请求和响应能够更早地结束,这样 Web 页面的显示速度也就相应提高了)
- 管线化:并行化,可以理解为异步,即不需要等待上一个请求结果,进行新的请求
- 支持持客户/服务器模式
HTTP报文
请求报文是由请求方法、请求 URI、协议版本、可选的请求首部字段和内容实体构成的。
响应报文基本上由协议版本、状态码(表示请求成功或失败的数字 代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。
HTTP 报文内的 HTTP 信息
HTTP 报文大致可分为报文首部和报文主体两块。两者由最初出现的空行(CR+LF)来划分。
- 首部字段 :一般有 4 种首部,分别是:通用首部、请求首部、响应首部和实体首部。
- 报文主体 :数据
提高传输速度
- 常用的内容编码有以下几种
- gzip(GNU zip)
- compress(UNIX 系统的标准压缩)
- deflate(zlib)
- identity(不进行编码)
- 分块传输编码
- 多种数据的对象集合:
MIME(Multipurpose Internet Mail Extensions,多用途因特网 邮件扩展)
机制
范围请求(Range Request):指定范围发出的请求(例如断点续传是一种应用)
内容协商(Content Negotiation):
客户端和服务端就响应的资源内容进行交涉,然后提供给客户最合适的资源。比如PC版还是手机版,英文版还是汉文版
返回结果的 HTTP 状态码
1XX :信息性状态吗 表示请求正在处理
2XX :成功 如:200
3XX :重定向
4XX :客户端请求错误 400 错误请求(不理解) 403 禁止 404 未找到
5XX :服务器错误 500 服务器内部错误 503 服务不可用
与HTTP协作的Web服务器
单台虚拟主机实现多个域名
通信数据转发程序:代理、网关、隧道
代理:转发时,需要附加 Via 首部字段以标记出经过的主机信息。目的利用缓存减少网络带宽流量;网络控制,获取访问日志等
代理可按是否使用缓存和是否修改报文分类
网关:网关是转发其他服务器通信数据的服务器,接收从客户端发来的请求时,他就像自己拥有资源的源服务器一样对请求进行处理。因此,利用网关可以由 HTTP 请求转化为其他协议通信。
网关和代理的区别是网关能使通信线路上的服务器提供非HTTP协议服务。利用网关能提高通信的安全性,因为可以在客户端和网关线路上加密以确保链接的安全。
隧道:隧道的目的是确保客户端能与服务器进行安全的通信。(SSL加密等加密手段)
隧道本身不解析HTTP请求,只是中转。
- 缓存
- 缓存指代理服务器或客户端本地磁盘保存的资源副本。利用缓存可以减少对源服务器的访问,也节省了通信流量和通信时间。
HTTP头部
介绍HTTP各种头部,见wiki
通过charles抓包可以看到头部信息
确保 Web 安全的 HTTPS
HTTP缺点
- 通信使用明文(不加密),内容可能会被窃听
防范:加密:通讯加密(HTTPS) && 内容加密
- 不验证通信方的身份,因此有可能遭遇伪装
防范:证书(SSL)
无法证明报文的完整性,所以有可能已遭篡改。
解决方案:在报文中增加MAC(Mesage Authentication Code),保证完整性
通常用MD5和SHA-1散列值校验以及文件的数字签名
HTTPS
HTTP+ 加密 + 认证 + 完整性保护 =HTTPS
HTTPS 是身披 SSL 外壳的 HTTP
HTTPS是HTTP通信接口部分用SSL和TSL协议代替而已。通常,HTTP直接和TCP通信。当使用SSL时,则变为先和SSL通信,再由SSL和TCP通信。
解决方案:
证书:证书由值得信任的第三方机构颁发,只要能确认通信方持有的证书,就可判断对方真实意图。
EV SSL证书(Extended Validation SSL Certificate)
该证书既可证明服务器是否规范,还可确认服务器运营企业是否真实存在。客户端证书:需要购买,按装机量收取。比价麻烦。
密钥 : 对称加密 && 非对称加密 (数字认证机构)
HTTPS 采用混合加密机制:HTTPS 采用共享密钥加密和公开密钥加密两者并用的混合加密机制。
SSL 速度慢
通信慢。因为需增加SSL通信,增加通信量。和HTTP相比,网络负载可能会变慢2到100倍。
大量消耗CPU及内存资源,导致处理速度变慢。因为SSL使用时,在服务器和客户端都要进行加密和解密的运算处理,比起HTTP会更多消耗服务器和客户端硬件资源。
确认访问用户身份的认证
- 需要认证的信息
HTTP/1.1 使用的认证方式如下所示。
- BASIC 认证(基本认证)
- DIGEST 认证(摘要认证)
- SSL 客户端认证
- FormBase 认证(基于表单认证)
基于 HTTP 的功能追加协议
- HTTP的瓶颈
- AJAX
只刷新局部Web内容,但是未解决HTTP的瓶颈
- Comet
延时响应,做服务器push功能,导致每次链接的时间变长,但是未解决HTTP的瓶颈
SPDY:消除性能瓶颈,缩短加载时间
SPDY 没有完全改写 HTTP 协议,而是在 TCP/IP 的应用层与运输 层之间通过新加会话层的形式运作(实际是在HTTP和SSL之间新增新对话)。考虑到安全性,SPDY默认使用SSL。使用 SPDY 后,HTTP 协议额外获得以下功能。
- 多路复用流
- 赋予请求优先级
- 压缩 HTTP 首部
- 推送功能
- 服务器提示功能
使用浏览器进行全双工通信的 WebSocket
- 推送功能
- 减少通信量
- HTTP 2.0
- webDev : web服务器管理文件
构建 Web 内容的技术
web开发技术(略)
Web 的攻击技术
- 针对 Web 应用的攻击模式
- 主动攻击
- 被动攻击
- 以服务器为目标的主动攻击
具有代表性的攻击是 SQL 注入攻击和 OS 命令注入攻击。
- 以服务器为目标的被动攻击
具有代表性的攻击是跨站脚本攻击和跨站点请求伪造。